5
תגובות
מה ההבדל בין REQUEST ל POST ?
5 תשובות
http://il.php.net/manual/en/reserved.variables.request.php
תקרא את הDescription .
המערך REQUEST כשמו כן הוא (בקשה).
לפרוטוקול HTTP יש כמה סוגי בקשות. הכי נפוצות הן GET ו POST, אך קיימות שמונה סוגי מתודה
(GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT).
המפתחים של PHP הבינו שליצור מערך לכל מתודה זה חסר ערך, אז הם יצרו את REQUEST שמכיל את כל המשתנים מכל סוג בקשה, כולל POST ו GET.
ככה שאם תשלח טופס במתודה HEAD לא תוכל לגשת למשתנים מהמערך _POST או _GET, בשביל זה יש את _REQUEST.
מבחינת אבטחה: אם השרת שלך עובד עם מתודות שהם לא GET\POST תמיד עדיף לבדוק באיזה מתודה הבקשה נשלחה, את זה עושים ככה:
<?php
//echo $_SERVER['REQUEST_METHOD'];
if($_SERVER['REQUEST_METHOD'] == 'HEAD')
{
echo $_REQUEST['Some_Var_Name'];
}
elseif($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo $_POST['Some_Var_Name'];
}
elseif($_SERVER['REQUEST_METHOD'] == 'GET')
{
echo $_GET['Some_Var_Name'];
}
else
{
echo "Unknow/Unsupported method type.";
}
//echo $_SERVER['REQUEST_METHOD'];
if($_SERVER['REQUEST_METHOD'] == 'HEAD')
{
echo $_REQUEST['Some_Var_Name'];
}
elseif($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo $_POST['Some_Var_Name'];
}
elseif($_SERVER['REQUEST_METHOD'] == 'GET')
{
echo $_GET['Some_Var_Name'];
}
else
{
echo "Unknow/Unsupported method type.";
}